<?php namespace Home\Controller; 

use Hdphp\Controller\Controller;
use Common\Model\Goods;
use Common\Model\GoodsList;
use Common\Model\GoodsAttr;
use Common\Model\Order;
use Common\Model\User;

//测试控制器
class CartController extends Controller{

	//构造函数
	public function __init()
	{
	}
	
    //添加购物车处理
    public function specAjax(){
		
		
		$goodsAttrModel = new GoodsAttr();
    	$goodsModel = new Goods();
		$goodsListModel = new GoodsList();
		$gid = Q('post.gid');//ajax传过来的gid
		
		
    	//1.规格ajax处理-关联商品表和商品列表，找出商品列表中的组合属性是否存在
    	$spec = Q('post.spec');//接受规格(46,51,)
    	$combineID = rtrim($spec,',');//去掉后面的，（46,51）
		
		$phpData = $goodsModel
				->join('goods_list',C('database.prefix').'goods.gid','=',C('database.prefix').'goods_list.wsshop_goods_gid')
				->where("gid = {$gid}")
				->where("combineID ='{$combineID}'")
				->get();
	
		if($phpData){//如果存在就返回数据
			$gaids =  explode(',', $combineID);//如果存在这个商品规格，处理附加价格
				foreach ($gaids as $k => $v) {
					$exprice = $goodsAttrModel->where("gaid = {$v}")->pluck('extraprice');
					$phpData[0]['shopprice'] = $phpData[0]['shopprice'] + $exprice;
					$phpData[0]['shopprice'] = $phpData[0]['shopprice']. '.00';
				}
//			p($phpData);	
			echo json_encode($phpData);exit;
		}else{//如果不存在就返回$phpData里的shopprice，我要处理价格的原价显示
			echo json_encode(0);exit;
		}
    }
	
	//添加购物车
	public function add(){
			if(!isset($_SESSION['account'])){//如果没有登录时
				echo json_encode(0);die;
			}
			
			$post = Q('post.cartData');
			$combineID = rtrim($post['specID'],',');//去掉后面的逗号
//			$combineID = explode(',', $combineID);//变数组
			
			//组合对应的订单列表的id成熟组
			$goodsListModel = new GoodsList();
			$glid = $goodsListModel->where("combineID = '{$combineID}' ")->pluck('glid');
			
			$data = [ 
			    'id'        => $post['gid'], // 商品 ID 
			    'name'      =>$post['gname'],// 商品名称 
			    'num'       => $post['num'], // 商品数量 
			    'price'     => $post['price'], // 商品价格 
			    'options'   => [
			    			'glid'=>$glid,//商品列表的id
			    			'combineID'=>$combineID,//组合属性id
			    			'listview'=>$post['listview'],//列表图
			    			'inventory'=>$post['inventory'],//符合组合属性的商品库存
			    			],// 其他参数如价格、颜色、可以为数组或字符串 
			]; 
			Cart::add($data);//购物车中的数据会写入到 $_SESSION 超全局数组中。
			echo json_encode(1);exit;
	}
	
	
	//购物车
	public function index(){
//		P($_SESSION);
		
		//思路：先判断是否已经登录？如果登录就跳到购物车页面，如果没有登录就跳转登录界面
		if(!isset($_SESSION['account'])){
			View::error('您还没有登录，请登录',U('Member/login'));
		}
		
		
		
		View::make();
	}
	
	//删除购买的商品
	public function del(){
		Cart::del(Q('post.sid'));//删除session里的商品
		echo json_encode(1);
	}
	
	//每次修改数量都发送一次ajax修改$_session
	public function edit(){
		$data = [
			'sid'=>Q('post.nowSid'),
			'num'=>Q('post.num'),
		];
		Cart::update($data);
	}
	
	
	//订单结算
	public function confirmOrder(){
		
		if(!isset($_SESSION['account'])){//进来的时候判断有没有登录，如果没有登录就跳转登录界面
			View::error('您还没有登录，请登录',U('Member/login'));
		}
		
		
		
		$userModel = new User();
		$orderModel = new Order();
		//判断是否有订单提交提交
		if(IS_POST){
			
			$orderModel->addOrder();//添加订单表
			View::success('订单提交成功',U('pay'));//然后跳转支付页面
		}
		
		//默认地址
		$data = $userModel->where("account = '{$_SESSION['account']}' ")->find();
		if(empty($data['address'])){

			View::error('您还未填写收货地址，请先填写收货地址地址再下单',U('Member/myCenter'));

		}
		
		View::with('data',$data);
		
		
		View::make();
	}
	
	//使用新地址
	public function useNewAddress(){
		//是否有ajax传输
    	if(IS_AJAX){
    		$orderModel = new Order();
			if(!$orderModel->store()){
				$this->ajax(['status'=>false,'message'=>$orderModel->getError()]);
			}else{
				$this->ajax(['status'=>true,'message'=>'修改成功']);
			}
    	}
	}
	
	//支付操作
	public function pay(){
		$userModel = new User();
		//有没有登录，如果没登录先去登录
		if(!isset($_SESSION)){//进来的时候判断有没有登录，如果没有登录就跳转登录界面
			View::error('您还没有登录，请登录',U('Member/login'));
		}
		
		//判断如果没有商品就先跳去首页，提示购买商品
		if(!isset($_SESSION['cart']['goods'])){
			View::error('订单中没有任何商品，请先去购物',U('Index/index'));
		}
		
		
		//确认支付弹窗
		if(IS_AJAX){//是否有ajax
            $orderModel = new Order();
			if(!$orderModel->pay()){
				$this->ajax(['status'=>false,'message'=>$orderModel->getError()]);
			}else{
				$this->ajax(['status'=>true,'message'=>'支付成功']);
			}
		}
		
		//我要分配账户余额
        $userData = $userModel->where("account ='{$_SESSION['account']}' ")->find();
		View::with('userData',$userData);
		View::make();
	}
	
	
	
	
}
